<?php
namespace App\Lib\Amqp\Message;


interface MessageInterface
{

    /**
     * 初始化消息
     * @param null $msg
     * @return mixed
     */
    public function initMessage ($msg = null);

    /**
     * 获取租户信息
     * @return string
     */
    public function getTenant (): string ;

    /**
     * 设置租户信息
     * @param string $tenant
     * @return MessageInterface
     */
    public function setTenant ($tenant = ''): MessageInterface ;

    /**
     * 获取消息ID
     * @return string
     */
    public function getID (): string ;

    /**
     * 设置消息ID
     * @param string $ID
     * @return MessageInterface
     */
    public function setID ($ID): MessageInterface ;

    /**
     * 获取消息标题
     * @return string
     */
    public function getTitle (): string ;

    /**
     * 设置消息标题
     * @param string $title
     * @return MessageInterface
     */
    public function setTitle ($title = ''): MessageInterface ;

    /**
     * 获取消息体（Json格式）
     * @return string
     */
    public function getContent (): string ;

    /**
     * 设置消息体（Json）
     * @param string $content
     * @return MessageInterface
     */
    public function setContent ($content = ''): MessageInterface ;

    /**
     * 获取发布消息源标识
     * @return string
     */
    public function getFrom (): string;

    /**
     * 设置发布消息源标识
     * @param string $from
     * @return MessageInterface
     */
    public function setFrom ($from): MessageInterface ;

    /**
     * 获取消费者信息
     * @return string
     */
    public function getTo (): string ;

    /**
     * 设置消费者信息
     * @param string $to
     * @return MessageInterface
     */
    public function setTo ($to): MessageInterface ;

    /**
     * 获取发布时间
     * @return string
     */
    public function getPublishTime (): string ;

    /**
     * 设置发布时间
     * @return mixed
     */
    public function setPublishTime ($time): MessageInterface ;

    /**
     * 获取消费时间
     * @return string
     */
    public function getConsumeTime (): string;

    /**
     * 设置消费时间
     * @return MessageInterface
     */
    public function setConsumeTime ($time): MessageInterface ;

    /**
     * 获取消费记录
     * @return array
     */
    public function getConsumeLog (): array ;

    /**
     * 设置消费记录
     * @param array $log
     * @return mixed
     */
    public function setConsumeLog (array $log): MessageInterface ;

    /**
     * 增加新的 消费记录
     * @param array $log
     * @return MessageInterface
     */
    public function addConsumeLog (array $log): MessageInterface ;

    /**
     * 获取错误提示
     * @return string
     */
    public function getErrorMsg (): string ;

    /**
     * 设置错误提示
     * @param string $errorMsg
     * @return MessageInterface
     */
    public function setErrorMsg ($errorMsg = ''): MessageInterface ;

    /**
     * 获取版本信息
     * @return string
     */
    public function getVersion (): string ;

    /**
     * 设置消息版本
     * @param float $version
     * @return MessageInterface
     */
    public function setVersion ($version = 1.0): MessageInterface ;

    /**
     * 获取完整的 MQ 消息
     * @return mixed
     */
    public function getMessage ();

    /**
     * 转化成字符串格式
     * @return string
     */
    public function toString (): string ;

    /**
     * 设置 Channel
     * @param $channel
     */
    public function setChannel ($channel);
    /**
     * 获取Channel
     */
    public function getChannel ();

    /**
     * 获取交货标签
     */
    public function getDeliveryTag ();

    /**
     * @param $deliveryTag
     * @return mixed
     */
    public function setDeliveryTag ($deliveryTag);

    /**
     * 获取源body
     * @return mixed
     */
    public function getBody ();

    /**
     * 设置源Body
     * @param string $body
     * @return mixed
     */
    public function setBody (string $body);

    /**
     * 获取源数据
     * @return mixed
     */
    public function getSourceData ();

    /**
     * 设置源数据
     * @param $sourceData
     * @return mixed
     */
    public function setSourceData ($sourceData);
}
